#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <malloc.h>
#include <sys/wait.h>

// mysys的功能与系统函数system相同，要求用进程管理相关系统调用自己实现一遍
// 使用fork/exec/wait系统调用实现mysys
// 不能通过调用系统函数system实现mysys
// 测试程序

void mysys(char *command)
{

    pid_t pid;
    pid = fork();
    if(pid == 0)
    {
        char *p = command;
        char *argv[256];
        int num = 0;
        int i = 0;
        int j = 0;
        while(*p)
        {
            
            if(*p == ' ')
            {
                j = 0;
                i++;
                num++;
            }
            else
            {
                if(j == 0)
                {
                    argv[i] = (char *)malloc(sizeof(char)*256);
                }
                argv[i][j] = *p;
                j++;
            }
            p++;
        }
        i++;
        argv[i] = NULL;
        int dd = execvp(argv[0], argv);
        if (dd < 0)
            perror(argv[0]);
        puts("after exec");
    }
    wait(NULL);
}

int main()
{
    printf("--------------------------------------------------\n");
    mysys("echo HELLO WORLD");
    printf("--------------------------------------------------\n");
    mysys("ls /");
    printf("--------------------------------------------------\n");
    return 0;
}


    